Grid computing is a method of harnessing the power of many computational resources in a network. Grid computing is a distributed computer infrastructure involving large-scale sharing applications and/or high performance processing and network bandwidth.
Referring to FIG. 1, a grid computing environment comprising a plurality of heterogeneous computing nodes distributed across multiple administrative domains. A virtual organization (e.g., VO-X, VO-Y, and VO-Z) may include nodes from different domains. For example, VO-Z includes nodes from each of Administrative Domains 110, 120, and 130.
A node (hereinafter also referred to as a computing resource) may be a member of several virtual organizations. An end-user (e.g., USER M, USER N, or USER 0) may need to access remote nodes either in the same administrative domain, or across domains. For example, User 0 may access VO-Y from within Domain 120, or User N within Domain 130 may access the same node from outside of Domain 120. Similarly, User M of Domain 130 may access both VO-Y and VO-Z through a single node in Domain 110.
Traditionally, grid computing has provided for the execution of batch jobs in the scientific and academic community. Batch execution on a grid computing environment requires authentication, authorization, resource access, resource discovery, and other services. In support of batch processing of jobs on a grid computing environment, protocols, services, application programming interfaces, and software development kits have been developed. The conventional method and system are not particularly suited for interactive grid computing sessions.
In a grid computing environment, resources are virtualized in the sense that the user does not need to know the name or IP address of a computing resource that he or she is utilizing. In this way, resources in a pool of resources can be dynamically assigned to various users depending on the demand and type of resources required. In addition, once a particular user no longer has need to continue a current computing session, the user can terminate the current computing session and release those computing resources supporting that computing session. Thereafter, the user can start a new computing session that is supported with one or more computing resources that are re-allocated to the user for the new computing session. The re-allocated computing resources typically are different from the computing resources supporting the current computing session, since computing resources are not typically reserved or dedicated to one specific user.
However, re-allocating resources to a particular user is time consuming, tedious, and inefficient in that much duplication of effort is expended to re-initialize those re-allocated computing resources for that particular user. For instance, files associated with the user will to be transferred to the re-allocated computing resources at the beginning of the new computing session. More particularly, prior art networks did not ensure that the latest version of the files were being transferred to the re-allocated computing resource. In that case, older versions of files could possibly be copied to the re-allocated computing resource resulting in lost work and inefficient duplication of effort in trying to recover the lost work. In addition, the user may also have to customize the system before starting the computing session, which leads to more time to initialize the computing resource. Also, the user may go through an initial period of unproductivity if the user has to learn specifics of the development environment that may change from one node containing one computing resource to another node containing another computing resource.
Moreover, the assignment of static accounts to particular computing resources unnecessarily ties a user to those computing resources where the user has an account. This contributes to an inefficient use of resources in a grid computing environment, especially when those computing resources are unavailable at the time the user needs those computing resources. Also, true virtualization of all the computing resources in the pool of computing resources supporting the grid computing environment is not achieved when specific computing resources are tied to a particular user through the static assignment of accounts. Since those accounts are assigned to the user, other users may not be able to utilize that computing resource, even if the computing resource is currently available, if all the accounts are pre-assigned.